﻿// copyright jyz.2024

#pragma once

#include "CoreMinimal.h"
#include "AbilitySystem/Data/CharacterClassInfo.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "AuraCommonFunLibrary.generated.h"

class UAbilitySystemComponent;
class UOverlayWidgetController;
/**
 * 
 */
UCLASS()
class AURARPGDEMO_API UAuraCommonFunLibrary : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()
public:
	UFUNCTION(BlueprintPure,meta=(WorldContext="WorldContextObject",DisplayName="GetOverlayWidgetContrl"),Category="AuraCommonFunLibrary|Widget Controller")
	static UOverlayWidgetController* GetOverlayWidgetController(const UObject* WorldContextObject);
	UFUNCTION(BlueprintPure,meta=(WorldContext="WorldContextObject",DisplayName="GetAMWidgetContrl"),Category="AuraCommonFunLibrary|Widget Controller")
	static UAttributeMenuWidgetController* GetAttributeMenuWidgetController(const UObject* WorldContextObject);

	UFUNCTION(BlueprintCallable,meta=(WorldContext="WorldContextObject"),Category="AuraCommonFunLibrary|CharacterClassDefaults")
	static void InitializeDefaultAttribute(
		const UObject* WorldContextObject,
		ECharacterClass CharacterClass,
		float Level,
		UAbilitySystemComponent*ASC);
	
	UFUNCTION(BlueprintCallable,meta=(WorldContext="WorldContextObject"),Category="AuraCommonFunLibrary|CharacterClassDefaults")
	static void GiveStartupAbilities(const UObject* WorldContextObject,UAbilitySystemComponent*ASC);
};
